<!doctype html>
<html lang="zh-cn">
  <head>
    <title>Mysql数据库的基本使用(1) // JW Blog</title>
    <meta charset="utf-8" />
    <meta name="generator" content="Hugo 0.60.1" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <meta name="author" content="John Doe" />
    <meta name="description" content="" />
    <link rel="stylesheet" href="https://duyi111.gitee.io/css/main.min.f90f5edd436ec7b74ad05479a05705770306911f721193e7845948fb07fe1335.css" />

    
    <meta name="twitter:card" content="summary"/>
<meta name="twitter:title" content="Mysql数据库的基本使用(1)"/>
<meta name="twitter:description" content="1.数据库 1.1 数据库的介绍  数据库就是存储和管理数据的仓库，数据按照一定的格式进行存储，用户可以对数据库中的数据进行增加、修改、删除、查询等操作。  1.2 数据库的分类  数据库的分类  关系型数据库 非关系型数据库   关系型数据库：  是指采用了关系模型来组织数据的数据库，简单来说，关系模型指的就是二维表格模型，好比Excel文件中的表格，强调使用表格的方式存储数据。 关系型数据库中核心元素  数据行 数据列 数据表 数据库（数据表的集合）   常用的关系型数据库：  Oracle Microsoft SQL Server MySQL SQLite     非关系型数据库：  非关系型数据库，又被称为NoSQL（Not Only SQL），意为不仅仅是SQL。对NoSQL最普遍的定义是“非关联型的”，强调Key-Value的方式存储数据。 常用的非关系型数据库：  MongoDB Redis      1.3 数据库的作用  数据库的作用就是存储和管理数据的  1.4 数据的特点  持久化存储 读写速度极高 保证数据的有效性  1.5 小结  数据库就是存储和管理数据的一个仓库，是用来持久化存储和快速读取数据的。 数据库分为关系型数据库和非关系型数据库  2."/>

    <meta property="og:title" content="Mysql数据库的基本使用(1)" />
<meta property="og:description" content="1.数据库 1.1 数据库的介绍  数据库就是存储和管理数据的仓库，数据按照一定的格式进行存储，用户可以对数据库中的数据进行增加、修改、删除、查询等操作。  1.2 数据库的分类  数据库的分类  关系型数据库 非关系型数据库   关系型数据库：  是指采用了关系模型来组织数据的数据库，简单来说，关系模型指的就是二维表格模型，好比Excel文件中的表格，强调使用表格的方式存储数据。 关系型数据库中核心元素  数据行 数据列 数据表 数据库（数据表的集合）   常用的关系型数据库：  Oracle Microsoft SQL Server MySQL SQLite     非关系型数据库：  非关系型数据库，又被称为NoSQL（Not Only SQL），意为不仅仅是SQL。对NoSQL最普遍的定义是“非关联型的”，强调Key-Value的方式存储数据。 常用的非关系型数据库：  MongoDB Redis      1.3 数据库的作用  数据库的作用就是存储和管理数据的  1.4 数据的特点  持久化存储 读写速度极高 保证数据的有效性  1.5 小结  数据库就是存储和管理数据的一个仓库，是用来持久化存储和快速读取数据的。 数据库分为关系型数据库和非关系型数据库  2." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://duyi111.gitee.io/post/mysql%E6%95%B0%E6%8D%AE%E5%BA%93%E7%9A%84%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A81/" />
<meta property="article:published_time" content="2020-02-01T22:01:17+08:00" />
<meta property="article:modified_time" content="2020-02-01T22:01:17+08:00" />


  </head>
  <body>
    <header class="app-header">
      <a href="https://duyi111.gitee.io/"><img class="app-header-avatar" src="/avatar.jpg" alt="John Doe" /></a>
      <h1>JW Blog</h1>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vehicula turpis sit amet elit pretium.</p>
      <div class="app-header-social">
        
      </div>
    </header>
    <main class="app-container">
      
  <article class="post">
    <header class="post-header">
      <h1 class ="post-title">Mysql数据库的基本使用(1)</h1>
      <div class="post-meta">
        <div>
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-calendar">
  <title>calendar</title>
  <rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line>
</svg>
          Feb 1, 2020
        </div>
        <div>
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="icon icon-clock">
  <title>clock</title>
  <circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline>
</svg>
          3 min read
        </div></div>
    </header>
    <div class="post-content">
      <h2 id="1">1.数据库</h2>
<h4 id="11-">1.1 数据库的介绍</h4>
<ul>
<li>数据库就是存储和管理数据的仓库，数据按照一定的格式进行存储，用户可以对数据库中的数据进行增加、修改、删除、查询等操作。</li>
</ul>
<h4 id="12-">1.2 数据库的分类</h4>
<ul>
<li>数据库的分类
<ul>
<li>关系型数据库</li>
<li>非关系型数据库</li>
</ul>
</li>
<li><em><strong>关系型数据库</strong></em>：
<ul>
<li>是指采用了关系模型来组织数据的数据库，简单来说，<em><strong>关系模型指的就是二维表格模型</strong></em>，好比Excel文件中的表格，强调使用表格的方式存储数据。</li>
<li>关系型数据库中核心元素
<ul>
<li>数据行</li>
<li>数据列</li>
<li>数据表</li>
<li>数据库（数据表的集合）</li>
</ul>
</li>
<li>常用的关系型数据库：
<ul>
<li>Oracle</li>
<li>Microsoft SQL Server</li>
<li>MySQL</li>
<li>SQLite</li>
</ul>
</li>
</ul>
</li>
<li><em><strong>非关系型数据库</strong></em>：
<ul>
<li>非关系型数据库，又被称为NoSQL（Not Only SQL），意为不仅仅是SQL。对NoSQL最普遍的定义是“非关联型的”，强调Key-Value的方式存储数据。</li>
<li>常用的非关系型数据库：
<ul>
<li>MongoDB</li>
<li>Redis</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 id="13-">1.3 数据库的作用</h4>
<ul>
<li>数据库的作用就是存储和管理数据的</li>
</ul>
<h4 id="14-">1.4 数据的特点</h4>
<ul>
<li>持久化存储</li>
<li>读写速度极高</li>
<li>保证数据的有效性</li>
</ul>
<h4 id="15-">1.5 小结</h4>
<ul>
<li>数据库就是存储和管理数据的一个仓库，是用来持久化存储和快速读取数据的。</li>
<li>数据库分为<em><strong>关系型数据库</strong></em>和<em><strong>非关系型数据库</strong></em></li>
</ul>
<h2 id="2mysql">2.MySQL数据库</h2>
<h4 id="21-mysql">2.1 MySQL数据库的介绍</h4>
<ul>
<li>MySQL是一个关系型数据库管理系统，在WEB应用方面，MySQL是最好的RDBMS（Relational Database Management System，关系数据库管理系统）应用软件，是最流行的关系型数据库管理系统中的一个。</li>
<li><em><strong>MySQL的特点</strong></em>：
<ul>
<li>1.MySQL是开源的。</li>
<li>2.MySQL支持大型的数据库，可以处理拥有上千万条记录的大型数据库。</li>
<li>3.MySQL使用标准的SQL数据语言形式。</li>
<li>4.MySQL可以安装在不同的操作系统，并且提供多种编程语言的操作接口，包括C、C++、Python、Java、Ruby等等。</li>
</ul>
</li>
</ul>
<h4 id="22-ubuntumysql">2.2 Ubuntu中MySQL数据库的安装</h4>
<ul>
<li>MySQL数据库服务端软件的安装：
<pre><code>sudo apt-get install mysql-server
</code></pre></li>
<li>MySQL数据库客户端软件的安装：
<pre><code>sudo apt-get install mysql-client
</code></pre></li>
<li>MySQL客户端连接MySQL服务端的命令：
<pre><code>mysql -u用户名 -p密码
</code></pre><ul>
<li>-u：表示MySQL服务端的用户名</li>
<li>-p：表示MySQL服务端的密码</li>
<li><code>quit</code>或者<code>exit</code>或者<code>Ctrl+d</code>表示退出</li>
</ul>
</li>
<li>linux操作指令之ps的说明
<ul>
<li>ps：查看当前系统中的进程</li>
<li>-a：表示所有用户</li>
<li>-u：表示显示用户名</li>
<li>-x：表示显示所有的执行程序</li>
</ul>
</li>
<li>查看MySQL服务状态
<pre><code>sudo service mysql status
</code></pre></li>
<li>停止MySQL服务
<pre><code>sudo service mysql stop
</code></pre></li>
<li>启动MySQL服务
<pre><code>sudo service mysql start
</code></pre></li>
<li>重启MySQL服务
<pre><code>sudo service mysql restart
</code></pre></li>
<li>MySQL命令的使用帮助
<pre><code>mysql --help
</code></pre></li>
</ul>
<h2 id="3">3.数据类型和约束</h2>
<h4 id="31-">3.1 数据类型</h4>
<ul>
<li>数据类型是指在创建表的时候为表中字段指定数据类型，只有数据符合类型要求才能存储起来，使用数据类型的原则是：够用就行，尽量使用取值范围小的，而不用大的，这样可以更多的节省存储空间。</li>
<li>常用数据类型：
<ul>
<li>整数：int，bit</li>
<li>小数：decimal</li>
<li>字符串：varchar，char</li>
<li>日期时间：date，time，datetime</li>
<li>枚举类型（enum）</li>
</ul>
</li>
<li>数据类型的说明：
<ul>
<li>decimal表示浮点数，如decimal(5, 2)表示共存5位数，小数占2位。</li>
<li>char表示固定长度的字符串，如char(3),如果填充'ab'时会补一个空格为'ab &lsquo;，3表示字符数。</li>
<li>varchar表示可变长度的字符串，如varchar(3),填充'ab'时就会存储'ab&rsquo;，3表示字符数。</li>
<li>对于图片、音频、视频等文件，不存储在数据库中，而是伤处啊哈·上传到某个服务器上，然后在表格中存储这个文件的保存路径。</li>
<li>字符串text表示存储大文本，当字符大于4000时推荐使用，比如技术博客</li>
</ul>
</li>
</ul>
<h4 id="32-">3.2 数据约束</h4>
<ul>
<li>约束是指数据在数据类型限定的基础上额外增加的要求。</li>
<li>常见的约束如下：
<ul>
<li>主键约束primary key：物理上存储的顺序，MySQL建议所有表的主键字段都叫id，类型为int unsigned。</li>
<li>非空约束not null：此字段不允许填写空值。</li>
<li>唯一约束unique：此字段的值不允许重复。</li>
<li>默认约束default：当不填写字段对应的值会使用默认值，如果填写时以填写为准。</li>
<li>外键约束foreign key：对关系字段进行约束，当为关系字段填写值时，会到关联的表中查询此值是否存在，如果存在着填写成功，如果不存在则填写失败并抛出异常</li>
</ul>
</li>
</ul>
<h4 id="33-">3.3 小结</h4>
<ul>
<li>常用的数据类型：
<ul>
<li>整数：int，bit</li>
<li>小数：decimal</li>
<li>字符串：varchar，char</li>
<li>日期时间：date，time，datetime</li>
<li>枚举类型（enum）</li>
</ul>
</li>
<li>常见的约束：
<ul>
<li>主键约束：primary key</li>
<li>非空约束：not null</li>
<li>唯一约束：unique</li>
<li>默认约束：default</li>
<li>外键约束：foreign key</li>
</ul>
</li>
<li>数据类型和约束保证了表中数据的准确性和完整性</li>
</ul>
<h2 id="4mysql">4.命令行客户端MySQL的使用</h2>
<h4 id="41-">4.1 登录和登出数据库</h4>
<ul>
<li>登录数据库：
<pre><code>mysql -u用户名 -p密码
</code></pre><ul>
<li>说明：
<ul>
<li>-u后面是登录的用户名</li>
<li>-p后面是登录密码，如果不填写，按回车之后也会提示输入密码</li>
</ul>
</li>
</ul>
</li>
<li>显示当前时间
<pre><code>select now();
</code></pre></li>
<li>登出（退出）数据库：
<pre><code>quit或者exit或者Ctrl+d
</code></pre></li>
</ul>
<h4 id="42sql">4.2数据库操作的SQL语句</h4>
<ul>
<li>1.查看所有数据库:
<pre><code>show databases;
</code></pre></li>
<li>2.创建数据库:
<pre><code>create database 数据库名 charset=utf8;
</code></pre></li>
<li>3.使用数据库：
<pre><code>use 数据库名;
</code></pre></li>
<li>4.查看当前使用的数据库：
<pre><code>select database();
</code></pre></li>
<li>5.删除数据库（慎重）
<pre><code>drop database 数据库名;
</code></pre></li>
</ul>
<h4 id="43-sql">4.3 表结构操作的SQL语句</h4>
<ul>
<li>1.查看当前数据库中所有表：
<pre><code>show tables；
</code></pre></li>
<li>2.创建表
<pre><code>create table 表名(
    字段名称1 数据类型 可选的约束条件,
    ...
    ...
    字段名称n 数据类型 可选的约束条件
    );
</code></pre></li>
<li>3.修改表&ndash;添加字段
<pre><code>alter table 表名 add 列名 类型 约束;
</code></pre></li>
<li>4.修改表&ndash;修改字段类型
<pre><code>alter table 表名 modify 列名 类型 约束;
</code></pre><ul>
<li><code>modify</code>:只能修改字段类型或者约束，不能修改字段名</li>
</ul>
</li>
<li>5.修改表&ndash;修改字段名和字段类型
<pre><code>alter table 表名 change 原名 新名 类型 约束;
  
</code></pre><ul>
<li>change:既能对字段重命名又能修改字段类型还能修改约束</li>
</ul>
</li>
<li>6.修改表&ndash;删除字段
<pre><code>alter table 表名 drop 列名;
</code></pre></li>
<li>7.查看创表SQL语句
<pre><code>show create table 表名;
</code></pre></li>
<li>8.查看创库SQL语句
<pre><code>show create database 数据库名;
</code></pre></li>
<li>9.删除表
<pre><code>drop table 表名;
</code></pre></li>
</ul>
<h4 id="44-sql">4.4 表数据操作的SQL语句</h4>
<ul>
<li>1.查询数据
<pre><code># 1.查询所有列
select * from 表名;
  
# 2.查询指定列
select 列1，列2，... from 表名;
# 例：
select id,name from students;
</code></pre></li>
<li>2.添加数据
<pre><code># 1.全列插入：值的顺序与表结构字段的顺序完全一一对应
insert into 表名 values(...);
# 2.部分列插入：值的顺序与给出的列顺序对应
insert into 表名(列1,...) values(值1,...);
# 例：
insert into students(name,age) values('小明', 18);
# 3.全列多行插入
insert into 表名 values(...),(...)...;
# 例：
insert into students values('小刘', 19, '女'),('小李', 20, '男');
# 4.部分列多行插入
insert into 表名(列1,...) values(值1,...),(值2,...),...;
</code></pre><ul>
<li>主键列是自动增长，但是在全列插入时需要占位，通常使用空值（0或者null或者default）。</li>
<li>在全列插入时，如果字段列有默认值可以试验default来占位，插入后的数据就是之前设置的默认值。</li>
</ul>
</li>
<li>3.修改数据
<pre><code>update 表名 set 列1 = 值1, 列2 = 值2,...where 条件 
</code></pre></li>
<li>4.删除数据
<pre><code>delete from 表名 where 条件
</code></pre><ul>
<li>上面的的操作称之为物理删除，一旦删除就不容易恢复，我们可以使用逻辑删除的方式来解决这个问题。</li>
</ul>
<pre><code># 添加删除表示字段，0表示未删除，1表示删除
alter table 表名 add isdelete bit default 0;
# 逻辑删除数据
update 表名 set isdelete = 1 where 条件
</code></pre><ul>
<li>逻辑删除，本质上就是修改操作</li>
</ul>
</li>
</ul>
<h4 id="45-">4.5 小结</h4>
<ul>
<li>登录数据库:
<pre><code>mysql -u用户名 -p密码
</code></pre></li>
<li>退出数据库：
<pre><code>quit或者exit或者Ctrl+d
</code></pre></li>
<li>创建数据库：
<pre><code>create database 数据库名 charset=utf8；
</code></pre></li>
<li>使用数据库：
<pre><code>use 数据库名;
</code></pre></li>
<li>删除数据库：
<pre><code>drop database 数据库名;
</code></pre></li>
<li>创建表：
<pre><code>create table 表名(字段名 字段类型 约束,...);
</code></pre></li>
<li>修改表&ndash;添加字段：
<pre><code>alter table 表名 add 字段名 字段类型 约束;
</code></pre></li>
<li>修改表&ndash;修改字段类型：
<pre><code>alter table 表名 modify 字段名 字段类型 约束;
</code></pre></li>
<li>修改表&ndash;修改字段名和字段类型：
<pre><code>alter table 表名 change 原字段名 新字段名 字段类型 约束;
</code></pre></li>
<li>修改表&ndash;删除字段：
<pre><code>alter table 表名 drop 字段名;
</code></pre></li>
<li>删除表：
<pre><code>drop table 表名;
</code></pre></li>
<li>查询数据:
<pre><code>select * from 表名;
# 或者
select 列1, 列2,...from 表名;
</code></pre></li>
<li>插入数据：
<pre><code>insert into 表名 values(...);
# 或者
insert into 表名 (列1,...) values (值1,...);
</code></pre></li>
<li>修改数据：
<pre><code>uodate 表名 set 列1 = 值1, 列2 = 值2,... where 条件
</code></pre></li>
<li>删除数据：
<pre><code>delete from 表名 where 条件
</code></pre></li>
</ul>

    </div>
    <div class="post-footer">
      
    </div>
  </article>

    </main>
  </body>
</html>
